package com.ruoyi.wms.service;

import java.util.List;
import com.ruoyi.wms.domain.WmsOwnerOrderNumberRule;

/**
 * 货主订单编号规则配置Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IWmsOwnerOrderNumberRuleService 
{
    /**
     * 查询货主订单编号规则配置
     * 
     * @param ruleId 货主订单编号规则配置主键
     * @return 货主订单编号规则配置
     */
    public WmsOwnerOrderNumberRule selectWmsOwnerOrderNumberRuleByRuleId(Long ruleId);

    /**
     * 查询货主订单编号规则配置列表
     * 
     * @param wmsOwnerOrderNumberRule 货主订单编号规则配置
     * @return 货主订单编号规则配置集合
     */
    public List<WmsOwnerOrderNumberRule> selectWmsOwnerOrderNumberRuleList(WmsOwnerOrderNumberRule wmsOwnerOrderNumberRule);

    /**
     * 根据货主ID查询规则配置列表
     * 
     * @param ownerId 货主ID
     * @return 货主订单编号规则配置集合
     */
    public List<WmsOwnerOrderNumberRule> selectRuleListByOwnerId(Long ownerId);

    /**
     * 新增货主订单编号规则配置
     * 
     * @param wmsOwnerOrderNumberRule 货主订单编号规则配置
     * @return 结果
     */
    public int insertWmsOwnerOrderNumberRule(WmsOwnerOrderNumberRule wmsOwnerOrderNumberRule);

    /**
     * 修改货主订单编号规则配置
     * 
     * @param wmsOwnerOrderNumberRule 货主订单编号规则配置
     * @return 结果
     */
    public int updateWmsOwnerOrderNumberRule(WmsOwnerOrderNumberRule wmsOwnerOrderNumberRule);

    /**
     * 批量删除货主订单编号规则配置
     * 
     * @param ruleIds 需要删除的货主订单编号规则配置主键集合
     * @return 结果
     */
    public int deleteWmsOwnerOrderNumberRuleByRuleIds(Long[] ruleIds);

    /**
     * 删除货主订单编号规则配置信息
     * 
     * @param ruleId 货主订单编号规则配置主键
     * @return 结果
     */
    public int deleteWmsOwnerOrderNumberRuleByRuleId(Long ruleId);

    /**
     * 根据货主ID删除规则配置
     * 
     * @param ownerId 货主ID
     * @return 结果
     */
    public int deleteWmsOwnerOrderNumberRuleByOwnerId(Long ownerId);

    /**
     * 生成订单编号
     * 
     * @param ownerId 货主ID
     * @param orderType 订单类型
     * @return 生成的订单编号
     */
    public String generateOrderNumber(Long ownerId, String orderType);

    /**
     * 预览订单编号格式
     * 
     * @param wmsOwnerOrderNumberRule 规则配置
     * @return 预览的订单编号
     */
    public String previewOrderNumber(WmsOwnerOrderNumberRule wmsOwnerOrderNumberRule);
    
    /**
     * 验证订单编号格式
     * 
     * @param ownerId 货主ID
     * @param orderType 订单类型
     * @param orderNumber 待验证的订单编号
     * @return 验证结果
     */
    public boolean validateOrderNumber(Long ownerId, String orderType, String orderNumber);
}